The invention is generally related to computers and computer software, and in particular, to logically-partitioned and virtualized computing environments.
Computing technology has advanced at a remarkable pace, with each subsequent generation of computing system increasing in performance, functionality, and storage capacity, often at reduced cost. In addition, workload allocation of computing and other hardware resources is often employed to maximize the utilization of hardware resources such as processors, memories, networks, storage devices, etc., and thereby reduce the overall costs necessary for supporting a desired workload capacity. Optimizing workload allocation can also have a positive impact on power costs and environmental concerns due to a reduction in the amount of hardware resources required to support a given workload.
Many computer or data processing systems employ virtualization, also referred to as logical partitioning, which enables one or more individual physical computers to each run several operating environments, or operating systems, at once in a virtualized computing environment. In some instances, for example, a single physical computer, which may also be referred to as a host, can run a plurality of operating systems in a corresponding plurality of virtual machines (VMs), also referred to as logical partitions (LPARs). Each operating system resides in its own virtual machine, with each virtual machine allocated a part of a physical processor, an entire physical processor, or multiple physical processors from the computer. Additionally, a portion of the computer's memory may be allocated to each virtual machine. An underlying partition manager, often referred to as a hypervisor or virtual machine monitor (VMM), manages and controls the virtual machines. The hypervisor is typically a part of the system firmware and manages the allocation of resources to the operating systems and virtual machines. As such, one physical computer may run one or more virtual machines and thus virtualize the underlying hardware resources used by the applications, operating systems, and other program code configured to operate in those virtual machines.
Whenever multiple virtual machines share the same hardware resources, a hypervisor will alternate between these virtual machines using time slicing. With time slicing, a hypervisor schedules each virtual machine to execute for a portion of a dispatch window, such that each virtual machine is active for only a portion of each dispatch window. Each dispatch window, however, is only a fraction of a second, so all virtual machines appear to run simultaneously.
Many computer or data processing systems also rely on the use of multi-threaded processors to improve overall system throughput. With hardware multi-threading, multiple hardware threads of execution may be implemented in one or more processors, with each processor including one or more processor cores. When combined with virtualization, individual virtual machines may be allocated one or more hardware threads of execution, and multiple software threads within such virtual machines may be scheduled for execution on the allocated hardware threads of execution.
The operating systems resident in many virtual machines include load balancing functionality that distributes the workload of a virtual machine across the available hardware threads of execution to optimize overall throughput by the virtual machine. However, the workloads of some virtual machines, e.g., of virtual machines running some types of batch processes, may not be readily distributed among multiple hardware threads of execution, resulting in these virtual machines running in only a limited number of hardware threads of execution. Workloads with low active thread count virtual machines, particularly in times of high system load, generally cannot rely on load balancing functionality within the virtual machines themselves to optimize workload, which may lead to poor performance for these virtual machines.